Nao entendo porque neste caso se concatena o 30 e o 20
<meta charset="UTF-8">
<script>
document.write("A idade de Janile é:");
document.write("<br>" + 30 + 20);
</script>
Nao entendo porque neste caso se concatena o 30 e o 20
<meta charset="UTF-8">
<script>
document.write("A idade de Janile é:");
document.write("<br>" + 30 + 20);
</script>
<meta charset="UTF-8">
<script>
document.write("A idade de Janile é:");
document.write("<br>" + (30 + 20));
</script>
Apenas complementando, ocorre por causa dos tipos utilizados no operador + e a precedência da avaliação da expressão. Quando se tem uma string e outro valor qualquer, então o outro valor é transformado em string e, então, é feito a concatenação.
No caso de "br" + 30 + 20, é avaliado pelo intepretador da esquerda para direita, gerando uma string "br30" que depois é concatenada com 20, gerando assim "br3020".
No caso de "br" + (30 + 20), como temos um parênteses, então a expressão 30 + 20 será avaliada primeiro. E, como os dois são do tipo numérico é feito uma soma, resultando assim na expressão "br" + 50. Então, agora sim é feito a concatenação.
Espero que tenha sido claro =)
Abç
E porque neste caso nao se usa o parentisis e nao se faz a concatenacao?
<meta charset="UTF-8">
<script>
document.write("Eu acertei: " + 15/50*100 );
</script>
Oi Janile!
Nesse caso também acontece a precedência. No JS, assim como nas outras linguagens e na matemática, o operador de divisão (/) e multiplicação (*) tem maior precedência sobre adição (concatenação no caso pois o operador foi sobreescrito na funcionalidade)
Só para exemplificar mais: "F" + 2 + 2 5 irá gerar a saída "F210" porque será avaliado a multiplicação (2 5) e depois as adições da esquerda para a direita. O passo a passo segue: "F" + 2 + 2 * 5 -> "F" + 2 + 10 -> "F2" + 10 -> "F210"
Quando tem parentereses, então estes são avalidados primeiros. Abaixo segue um passo a passo de exemplo: "F" + (2 + 2) 5 -> "F" + 4 5 -> "F" + 20 -> "F20".
Espero ter ajudad =)
Neste link tem uma seção falando sobre expressões, operadores e sua avaliação e outro link falando sobre a precedência.
https://msdn.microsoft.com/pt-br/library/z3ks45k7(v=vs.94).aspx
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressões
Abç
Oi Janile! Vamos revisar isso.
Toda concatenação ocorre da esquerda para a direita, sempre nessa ordem, no entanto, se houver um parênteses, o que estiver dentro do parêntese é avaliado primeiro. Isso é a teoria, já vejo na prática com você.
Outra teoria: quando você tem concatenação de string(texto) com número, o resultado final é sempre uma string(texto).
Sendo assim:
10 + 10 // o resultado é 20, porque é número, não é string.
"10" + "10" // o resultado é "1010", porque temos duas string e quando temos string ocorre a concatenação que é um nome bonito para junção.
10 + "10" // string com número ou número com string, não importa a ordem dá uma string, por isso o resultado é "1010".
Então, voltando ao problema que você trouxe.
document.write("<br>" + 30 + 20);
Lembrando da teoria, que a concatenação vem da esquerda para a direita. Então será feito "" + 30. Qual o resultado de uma strting com número? Uma string! então vai ser "30". E agora, essa string é concatenada com 20, número. O que dá string com número? String! POr isso o resultado final é "3020".
Agora, olhe como muda quando usamos parêntese:
document.write("<br>" + (30 + 20));
Assim como na matemática, operações em parênteses vem primeiro. Então, qual é o resultado de 30 + 20? É 50!
É como seu código agora estivesse assim:
document.write("<br>" + 50);
E agora? Tem mais parênteses? Não, então ele vai concatenar "" com o número 50, que vai ser "50".
Faça diversos testes e brinque com o resultado. Esse conceito, apesar de ser de iniciante, será carregado e aplicado pelo resto da vida em várias linguagens de programação.
Só me dê um retorno para eu saber se esta tudo certinho, tudo bem?
Janile? Sua dúvida foi solucionada? Se sim, please, marque uma das nossas respostas como solução. Isso ajuda os moderadores e focarem aquelas perguntas que ainda não foram solucionadas.
Mas claro, se a dúvida continuar, nos avise para que possamos solucioná-la.
Sucesso e bom estudo!