Diferenças das Funções Javascript

Boa noite.
Alguém pode me dar uma breve explicação do porquê entra na função alertar do If, sendo false, se está dentro do if e depois entre no else que é o correto?

if (snapshot.child(i - 1).child('autor').val() == mensagem.autor) {
            //BootstrapDialog.alert('Não pode postar mensagem, depois de uma de sua autoria já ter sido publicada. Aguarde a vez de outro pra poder voltar a postar.');
            alertar('Não pode postar mensagem, depois de uma de sua autoria já ter sido publicada. Aguarde a vez de outro pra poder voltar a postar.');
        } else {
            try {
                refPassada.child(i).update(mensagem);
                alertar('Mensagem postada com sucesso.');
            } catch (erro) {
                alertar('Ocorreu erro ao tentar gravar seu post. Erro: ' + erro);
            }

        }

Qual alertar? Tem 3 ai. E quando voce debuga, qual valor vem em cada lado da condicao?

Do If, considerando que a comparação seja false, entra no alertar do if também.

Se for pra considerar que a comparação seja false e voce não debugar o que realmente cada lado da condição retorna no seu código, logicamente não vai entrar na primeira mensagem: https://jsfiddle.net/643y5vrj/

Eu acabei de gravar uma screencast pra vc entender melhor. Segue:
https://1drv.ms/v/s!Ap15WA7LCgcQmikik6py-GUcV_qw

Me informaram que a função do firebase, ao ter alguma alteração no banco de dados, entra, novamente, e da segunda vez, entra no if.