Em javascript, funções são consideradas objetos de primeira classe. Isso significa que uma função pode ser atribuída à uma variável (function expression), ser passada como parâmetro de outra função, ser vinculada à uma propriedade de um objeto literal (chamado isso de método pela similiaridade com linguagens orientadas a objetos), etc.
Essa característica é a base para enteder o funcionamento de uma função de callback.
Sem mais delongas, segue o vídeo: