Olá Thiago, tudo bem?!
Vou te explicar essa estrutura de condição de uma forma que não fique confusa para você, então vamos nessa.
Vamos dizer que existe 3 formas de escrever uma condição no seu código. Usando apenas um "IF", usando um "IF" e em seguida com um "ELSE" ou da forma que está presente no código do instrutor que é usando um "IF", "ELSE IF" e em seguida "ELSE".
Traduzindo essa condição para o português, ficaria dessa forma:
se ( contador == 33 ) {
contador = contador + 1;
} senão se (contador == 37) {
contador = contador + 1;
} senão {
mostra(contador);
contador = contador + 1;
}
O que acontece quando esse código é executado, o computador verifica a condição no "IF" se for verdadeira ele entra e executa a lógica que está dentro do bloco da condição. Se for falsa, ele segue para o "ELSE IF" que ele vai verificar a nova condição que nesse caso é "(contator == 37)", caso for verdadeira ele entra e executa a lógica que está dentro do bloco da condição. E no caso do "ELSE" você não declara uma condição como no "IF" e "ELSE IF", ele é apenas executado caso nenhuma das condições acima dele sejam verdadeiras.
OBS¹: Você pode declarar quantos "ELSE IF" quiser em lógicas de condições mas sempre seguinte de um "IF".
// EXEMPLO
if ( contador == 33 ) {
contador = contador + 1;
} else if (contador == 37) {
contador = contador + 1;
} else if (contador == 38) {
contador = contador + 1;
} else if (contador == 40) {
contador = contador + 1;
} else {
mostra(contador);
contador = contador + 1;
}
OBS²: Você não pode pôr um "ELSE IF" após um "ELSE".
Bom, é isso. Espero ter lhe ajudado.
Abraços.