Primeiramente não do que pedir desculpas. Aqui é um ambiente de aprendizado e absolutamente ninguém nasce sabendo.
Agora vamos para sua dúvida.
Em programação nem sempre os símbolos representam aquilo que já sabemos. É preciso desconstruir algumas coisas:
Um bom exemplo é o sinal de igual (=) que no mundo javascript (e em muitas outras linguagens de programação) representa a operação de atribuição (x = y lê-se x RECEBE y)
Desta forma, nem sempre quando utilizamos o operador + estamos somando algo.
Pelo seu texto acredito que tenha entendido essa parte.
O JavaScript foi construido para "aceitar desaforos" ele tenta ao máximo entender o que está acontecendo e consertar alguns descuidos, o que pode gerar esse tipo de confusão.
<meta charset="UTF-8">
<script>
var IDADE1 = 10;
var IDADE2 = "20";
var IDADE3 = 12;
document.write("A média das idades é <br>");
document.write( (IDADE1 + IDADE2 + IDADE3) / 3);
</script>
neste exemplo da aula, o que acontece é que durante a concatenação (IDADE1 + IDADE2 + IDADE3) o javascript identifica um dos termos como string e por isso transforma tudo em string.
Em seguida, na operação de divisão ele novamente identifica que a string é um numeral e a transforma para numeral fazendo a divisão.
A situação que vc prevê que aconteceria seria uma realidade apenas se um dos termos da concatenação não fosse um número (NaN). Assim o Javascript retornaria NaN no final da operação.
Exemplo negativo:
<meta charset="UTF-8">
<script>
var IDADE1 = 10;
var IDADE2 = "Felipe";
var IDADE3 = 12;
document.write("A média das idades é <br>");
document.write( (IDADE1 + IDADE2 + IDADE3) / 3); //o retorno disso será NaN
</script>
Respondendo à sua segunda pergunta: a maioria das linguagens não tem esse mesmo comportamento, mas não arrisco dizer que a isso ocorre SOMENTE em JS