Olá Wilber, tudo bem com você?
A dúvida é: se o array foi declarado vazio, como o laço estaria fazendo essa comparação?
Então, acontece que no primeiro ingrediente adicionado ele não entra dentro desse laço, pois o valor de posição é 0, e a quantidade de elementos do array ingredientes também é 0, o que está certo pois é impossível que o primeiro ingrediente adicionado sejá repetido, compreende?
Após o primeiro ingrediente adicionado que realmente começa a verificação, vou dar um exemplo:
Imagine que iremos adicionar 3 Ingredientes: "Chocolate", "Leite Condensado" e "Manteiga"
Ingredientes começa como = [ ]
Ao adicionar o Chocolate não haverá comparação, e no final o array de ingredientes irá ficar: Ingredientes = [ "Chocolate"]
Quando adicionarmos o "Leite Condensado" ele irá percorrer o array de ingredientes ( pois agora posicao = 0 e ingredientes = 1 e irá comparar os ingredientes, como são diferentes, será adicionado: Ingredientes = [ "Chocolate", "Leite Condensado"]
Por fim irá acontecer a mesma coisa com a "Manteiga", ficando: Ingredientes = ["Chocolate", "Leite Condensado", "Manteiga"]
Entendeu? Qualquer coisa estou a disposição :)
Abraços e Bons Estudos!