Boa noite, Bruna! Como vai?
O trecho do código ao qual vc se refere é esse aqui:
while(contador <= 40) {
if( contador == 33 ) {
contador = contador + 1;
}
if(contador == 37) {
contador = contador + 1;
} else {
mostra(contador);
contador = contador + 1;
}
}
Veja que em ambos os casos é feito contador = contador + 1! Sendo assim, quando o contador vale 33, o JS entra no primeiro if e já altera o valor da variável contador que passa a valer 34! Em seguida, o JS vai pro segundo if e como o valor de contador é 34, ele cai no else imprimindo 34 na tela e depois fazendo contador = contador + 1 fazendo o valor de contador passar a ser 35!
Depois disso, 36 é impresso!
Por fim, quando contador passa a valer 37, o JS vai cair no segundo if e fazer o já conhecido contador = contador + 1, alterando o valor da variável contador que passa a valer 38! Como caiu no if o JS passa direto do else não imprimindo nada e dá início à um novo ciclo do laço de repetição! Como dessa vez contador vale 38, o JS cai somente no else, mostrando 38 na tela e atualizando o valor da variável contador para 39!
O resto é história...
Pegou a ideia? Qualquer coisa é só falar!
Grande abraço e bons estudos, minha aluna!