Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Porque meu navegador imprimiu a seguinte informação NaN?

Realizei o código dessa atividade da seguinte forma:

<meta charset="utf-8">

<script>
    document.write("Eu acertei:  " + 50 - 35);
</script>

Não houve a subtração e ainda apareceu em meu navegador, "NaN", fui ao console para verificar se havia algum erro e não aparece nada, podem me ajudar a entender?

(obs: Gostaria de aproveitar o espaço para parabeniar a didática do prof. Flávio. Excelente!)

Abraços :)

3 respostas
solução!

Boa noite, Jessica! Como vai?

Que bom que está curtindo e aproveitando ao máximo o curso do mestre Flávio! Inclusive, posso adiantar que vc o verá por diversos cursos aqui da Alura! Então vc deverá ficar bem feliz por isso!

Quanto à sua dúvida, NaN significa not a number! E isso está ocorrendo pq o interpretador JavaScript do navegador lê e interpreta o código de cima pra baixo, da esquerda pra direita! Daí, durante esse processo, ele dará de cara com a seguinte linha:

document.write("Eu acertei:  " + 50 - 35);

Nesse momento o que ele vai tentar fazer é resolver a expressão que está entre os parênteses do document.write()! Como eu disse, o interpretador vai ler essa expressão da esquerda pra direita, então os passos dados por ele serão:

"Eu acertei:  " + 50 // Que resultará em "Eu acertei:  50" ( essa operação se chama concatenação ).
"Eu acertei:  50" - 35 // Que resulta em NaN.

O resultado NaN significa que vc tentou fazer uma operação, nesse caso a subtração, onde um dos fatores não tinha um valor numérico!

Solução: basta envolver a subtração com parênteses! Com eles vc dá uma pista ao JavaScript que deseja que essa operação seja efetuada antes da concatenação!

document.write("Eu acertei:  " + (50 - 35));

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!

Caramba vocês respondem muito rápido!!! (Parabéns), realizando os exercícios seguintes percebi que deveria estar entre parênteses, testei e deu certo, entretanto ainda resta uma dúvida: Por que nessa minha operação foi necessário usar os parênteses e na resposta da questão não, conforme o código abaixo (que está na resposta do exercício)?

<meta charset="UTF-8">
<script>
    document.write("Eu acertei: " + 15/50*100 );
</script>

Opa, Jessica!

Por que nessa minha operação foi necessário usar os parênteses e na resposta da questão não, conforme o código abaixo (que está na resposta do exercício)?

Pq quando se trata das operações realizadas com esses operadores ( +, -, *, / ), o JavaScript irá levar em consideração a ordem matemática! Desse modo, ele sempre vai efetuar primeiro multiplicação e divisão ( na ordem em que elas aparecem ) e depois soma e subtração ( na ordem em que elas aparecem ).

No seu primeiro exemplo que resultou em NaN as operações eram de soma ( concatenação ) e subtração. Então o JavaScript executou primeiro a concatenação e depois a subtração, justamente na ordem em que apareciam!

No segundo exemplo, ele fará primeiro a divisão ( 15/50 ), depois a multiplicação ( resultadoDaDivisao * 100 ) e, por último, a concatenação. Nesse caso não foi necessário os parênteses pq a ordem já estava implícita devido as operações efetuadas!

Caramba vocês respondem muito rápido!!! (Parabéns)

Normalmente sempre tem algum moderador ou outro aluno online no fórum. Daí as respostas costumam acontecer num tempo bom. Talvez não tão rápido como foi dessa vez pq calhou de eu estar dando uma geral no fórum quando sua questão apareceu! Daí eu pude rapidamente te conduzir à luz do conhecimento!

Portanto, sempre que precisar, é só mandar aqui no fórum que a gente te ajuda!