Opa Antonio, tudo bem com você?
Não é uma pergunta boba não, realmente a maneira como que cada linguagem lida com a concatenação (+)
de Strings, e operações nesse sentido, é algo que sempre da uma confundida, mas vamos lá:
O código vai ir indo da esquerda para direita e teremos:
"2" + "2"
: Aqui realmente teremos a concatenação como se fosse um texto com resultado "22"
"22" - "2"
: Aqui teremos um comportamento diferente, para o javascript
o sinal de subtração não indica nada para textos, então ele tenta fazer uma conversão dos dois valores para números para executar a operação solicitada
Caso de sucesso teremos um valor numérico associado, no caso o 20.
Caso uma das parcelas não seja um número, por exemplo ( "22" - "2a")
teremos um resultado de NaN
(Not a Number)
A mesma coisa acontece com as operações de multiplicação e divisão, dado que só o sinal de + tem significado com textos, todos outros a linguagem vai tentar fazer a conversão
Mas veja que isso é com javascript
, em Python
por exemplo:
"teste" * 2
Irá retornar "testeteste"
Pois a linguagem deu um significado a operação de multiplicação com palavras, em javascript o retorno seria NaN
pelo que comentei :)
Conseguiu Compreender?
Abraços e Bons Estudos!