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!