Operadores e comparações

Digamos que você está rastreando um carrinho de compras. Você soma os preços, aplica um desconto, verifica se o total ultrapassa um limite de frete grátis e decide se deve mostrar um aviso quando o carrinho está vazio. Cada uma dessas etapas é um operador em ação: um símbolo que pega um ou dois valores e produz um novo. Este capítulo cobre os operadores que você usa constantemente, desde fazer aritmética em números até comparar valores e combinar testes verdadeiro-ou-falso.
Aritmética e atribuição
Os operadores aritméticos fazem a matemática que você já conhece: + soma, - subtrai, * multiplica, / divide. Existe um mais que você pode não ter encontrado: %, o operador de resto, que lhe dá o que sobra após uma divisão.
const total = 8 + 5; // 13
const change = 20 - 13; // 7
const leftover = 17 % 5; // 2, porque 5 cabe em 17 três vezes com 2 restantes
console.log(total); // 13Quando você quer atualizar um valor baseado nele mesmo, existe uma abreviatura. Em vez de escrever score = score + 10, você pode escrever score += 10. Significa a mesma coisa: pega o valor atual, adiciona 10, armazena o resultado de volta.
let score = 100;
score += 10; // score agora é 110
score -= 30; // score agora é 80
console.log(score); // 80E para mover um número para cima ou para baixo por exatamente um, ++ e -- fazem isso em um único passo. count++ adiciona um, count-- tira um.
let lives = 3;
lives--; // lives agora é 2
console.log(lives); // 2% para o resto após dividir. Quando você atualiza um valor a partir dele mesmo, recorra à abreviatura: score += 10 em vez de score = score + 10. E ++ ou -- empurra um número para cima ou para baixo por um. Levou um tempo para eu confiar nestes, mas é a mesma matemática escrita mais curta. Comparações
Uma comparação faz uma pergunta sobre dois valores e responde com true ou false. Essas respostas verdadeiro-ou-falso são booleanos, e é isso que seu programa usa para tomar decisões mais tarde.
A comparação que você usará mais é ===, que pergunta "esses dois são exatamente iguais?"
const answer = 42;
console.log(answer === 42); // true
console.log(answer === 7); // falseSeu oposto é !==, que pergunta "esses dois são diferentes?" E para ordem existem <, >, <= e >=, que funcionam como em matemática: menor que, maior que, menor ou igual, maior ou igual.
const age = 18;
console.log(age >= 18); // true
console.log(age !== 21); // trueSempre compare com ===, nunca ==. A versão com dois sinais de igual tem uma peculiaridade que surpreende as pessoas, e a versão com três sinais de igual faz o que você espera toda vez.
true ou false. Use === para verificar igualdade, !== para "diferente", e <, >, <=, >= para ordem. Mantenha-se com === e pule ==, porque a versão dupla tem uma surpresa nela e a versão tripla se comporta. Operadores lógicos e veracidade
Frequentemente você precisa combinar mais de uma comparação. Os operadores lógicos deixam você fazer isso: && (e), || (ou) e ! (não).
&& é true apenas quando ambos os lados são true. || é true quando pelo menos um lado é true. ! inverte um booleano para seu oposto.
const age = 20;
const hasTicket = true;
console.log(age >= 18 && hasTicket); // true, ambos são true
console.log(age < 13 || hasTicket); // true, um lado é o suficiente
console.log(!hasTicket); // false, invertidoExiste uma ideia relacionada chamada truthy e falsy. Em uma configuração verdadeiro-ou-falso, JavaScript trata alguns valores não-booleanos como se fossem false. Os valores falsy são false, 0, "" (uma string vazia), null, undefined e NaN. Tudo mais conta como truthy.
const name = "";
console.log(!name); // true, uma string vazia é falsy&& é "ambos", || é "qualquer um", e ! inverte um booleano. Além disso, JavaScript trata alguns valores como falsos: false, 0, "", null, undefined e NaN são os falsy, e tudo mais é truthy. Isso é o que deixa !name significar "nenhum nome foi dado". Para onde os operadores vão daqui
Operadores são os verbos da linguagem: eles pegam os valores que você armazena e os transformam em resultados e decisões. Aritmética produz novos números, comparações produzem booleanos, e operadores lógicos combinam esses booleanos nas respostas sim-ou-não que seu programa age.
Esses booleanos não fazem muito por conta própria. O próximo passo é usá-los para direcionar seu código, executando um ramo quando uma verificação passa e outro quando falha, que é do que trata o capítulo condicionais. Se algum dos valores aqui pareceu nebuloso, o capítulo tipos de dados é onde números, strings e booleanos ganham seu tratamento completo.

