Oi, Queren, tudo bem?
Respondendo a sua pergunta: sim, é um processo interno. Métodos como forEach, map, filter e reduce possuem uma lógica interna para determinar os valores dos parâmetros declarados na função callback.
Vou dar um exemplo de código do vídeo sobre forEach:
const notas = [10, 6.5, 8, 7.5];
let somaDasNotas = 0;
notas.forEach(function (nota) {
somaDasNotas += nota;
});
No código acima, nós declaramos uma função anônima, que está sendo utilizada como função callback do método forEach. Nós apenas declaramos essa função anônima, que espera receber um parâmetro nota. Note que em nenhuma parte do código nós executamos essa função explicitamente (e nem haveria como, já que ela nem possui um nome).
Isso revela que, na verdade, a lógica interna do método forEach irá executar a função callback pra gente. Você pode imaginar que, na implementação interna do forEach, há uma estrutura for que executa a função callback que passamos. E, no momento de cada execução, é passado o valor de uma das notas do array para o parâmetro nota.
Isso reforça mais uma vez a terminologia "função callback", que significa uma função que é "chamada de volta". Nesse caso, a função callback passada para o forEach é chamada de volta para ser executada para cada um dos elementos do array.
A mesma lógica é aplicada para o método reduce. Por exemplo, no código abaixo:
const notasDaSala = [6, 5, 8, 9, 5, 6];
const somaDasNotas = notasDaSala.reduce((acumulador, nota) => {
return acumulador + nota;
}, 0);
O processo é semelhante: passamos uma função callback para o método reduce, e ele se encarregará de executar essa função para cada item do array, passando os valores corretos para os parâmetros acumulador e nota em cada execução.
Espero ter ajudado! Abraços e bons estudos :)