Aritmética JS
Operadores aritméticos de JavaScript
Os operadores aritméticos realizam operações aritméticas em números (literais ou variáveis).
| Operador | Descrição | 
|---|---|
| + | Adição | 
| - | Subtração | 
| * | Multiplicação | 
| ** | Exponenciação ( ES2016 ) | 
| / | Divisão | 
| % | Módulo (restante) | 
| ++ | |
| - | Redução | 
Operaçoes aritimeticas
Uma operação aritmética típica opera em dois números.
Os dois números podem ser literais:
Exemplo:
    let x = 100 + 50;
    
  ou variáveis:
Exemplo:
    let x = a + b;  
    
  ou expressões:
Exemplo:
    let x = (100 + 50) * a;  
    
  Operadores e operandos
Os números (em uma operação aritmética) são chamados de operandos.
A operação (a ser realizada entre os dois operandos) é definida por um operador.
| Operand | Operator | Operand | 
|---|---|---|
| 100 | + | 50 | 
Adicionando
O operador de adição ( +) adiciona números:
Exemplo:
    let x = 5;
    let y = 2;
    let z = x + y;  
    
  Subtraindo
O operador de subtração ( -) subtrai números.
Exemplo:
    let x = 5;
    let y = 2;
    let z = x - y;  
    
  Multiplicando
O operador de multiplicação ( *) multiplica números.
Exemplo:
    let x = 5;
    let y = 2;
    let z = x * y;  
    
  Dividindo
O operador de divisão ( /) divide os números.
Exemplo:
    let x = 5;
    let y = 2;
    let z = x / y;  
    
  Restante
O operador de módulo ( %) retorna o resto da divisão.
Exemplo:
    let x = 5;
    let y = 2;
    let z = x % y;  
    
  
Na aritmética, a divisão de dois inteiros produz um quociente e um resto.
Em matemática, o resultado de uma operação de módulo é o resto de uma divisão aritmética.
Incrementando
O operador de incremento ( ++) incrementa os números.
Exemplo:
    let x = 5;
    x++;
    let z = x;  
    
  Decrementar
O operador de decremento ( --) diminui os números.
Exemplo:
    let x = 5;
    x--;
    let z = x;  
    
  Exponenciação
O operador de exponenciação ( **) eleva o primeiro operando à potência do segundo operando.
Exemplo:
    let x = 5;
    let z = x ** 2; // result is 25  
    
  x ** y produz o mesmo resultado que Math.pow(x,y):
Exemplo:
    let x = 5;
    let z = Math.pow(x,2);   // result is 25  
    
  operador precedente
A precedência do operador descreve a ordem em que as operações são realizadas em uma expressão aritmética.
Exemplo:
    let x = 100 + 50 * 3;  
    
  O resultado do exemplo acima é igual a 150 * 3 ou igual a 100 + 150?
A adição ou multiplicação é feita primeiro?
Como na matemática escolar tradicional, a multiplicação é feita primeiro.
Multiplicação ( *) e divisão ( /) têm precedência mais alta do que adição ( +) e subtração ( -).
E (como na matemática escolar) a precedência pode ser alterada usando parênteses:
Exemplo:
    let x = (100 + 50) * 3;  
    
  Ao usar parênteses, as operações dentro dos parênteses são calculadas primeiro.
Quando muitas operações têm a mesma precedência (como adição e subtração), elas são calculadas da esquerda para a direita:
Exemplo:
    let x = 100 + 50 - 3;
    
  Valores de precedência do operador JavaScript
Entradas em vermelho claro indicam ECMAScript 2015 (ES6) ou superior.
| Valor | Operador | Descrição | Exemplo | 
|---|---|---|---|
| 21 | () | Agrupamento de expressão | (3 + 4) | 
| 20 | . | Membro | person.name | 
| 20 | [] | Membro | pessoa [" nome "] | 
| 20 | () | Chamada de função | myFunction () | 
| 20 | novo | Criar | nova data () | 
| 18 | ++ | Incremento Postfix | i ++ | 
| 18 | - | Redução do Postfix | i-- | 
| 17 | ++ | Incremento do prefixo | ++ i | 
| 17 | - | Diminuição do prefixo | --i | 
| 17 | ! | Lógico, não | ! (x == y) | 
| 17 | typeof | Tipo | typeof x | 
| 16 | ** | Exponenciação (ES2016) | 10 ** 2 | 
| 15 | * | Multiplicação | 10 * 5 | 
| 15 | / | Divisão | 5/10 | 
| 15 | % | Restante da Divisão | 10% 5 | 
| 14 | + | Adição | 10 + 5 | 
| 14 | - | Subtração | 10 - 5 | 
| 13 | < < | Shift para a esquerda | x < < 2 | 
| 13 | > > | Deslocar para a direita | x > > 2 | 
| 13 | > > > | Shift para a direita (sem sinal) | x > > > 2 | 
| 12 | < | Menos de | x < y | 
| 12 | < = | Menor ou igual | x < = y | 
| 12 | > | Maior que | x > y | 
| 12 | > = | Maior ou igual | x > = y | 
| 12 | em | Propriedade no objeto | "PI" em matemática | 
| 12 | instância | Instância do objeto | instância da matriz | 
| 11 | == | Igualdade | x == y | 
| 11 | === | Igualdade estrita | x === y | 
| 11 | ! = | Desiguais | x! = y | 
| 11 | ! == | Estritamente desigual | x! == y | 
| 10 | & | E bit a bit | x & y | 
| 9 | ^ | XOR bit a bit | x ^ y | 
| 8 | | | Bitwise OU | x | y | 
| 7 | & & | Lógico E | x & & y | 
| 6 | || | Lógico OU | x || y | 
| 5 | ?? | Coalescência nula | x ?? y | 
| 4 | ? : | Condição | ? "Sim": "Não" | 
| 3 | + = | Atribuição | x + = y | 
| 3 | / = | Atribuição | x / = y | 
| 3 | - = | Atribuição | x - = y | 
| 3 | * = | Atribuição | x * = y | 
| 3 | % = | Atribuição | x% = y | 
| 3 | < < = | Atribuição | x < < = y | 
| 3 | > > = | Atribuição | x > > = y | 
| 3 | > > > = | Atribuição | x > > > = y | 
| 3 | & = | Atribuição | x & = y | 
| 3 | ^ = | Atribuição | x ^ = y | 
| 3 | | = | Atribuição | x | = y | 
| 2 | rendimento | Função de pausa | rendimento x | 
| 1 | , | Vírgula | 5, 6 | 
Fonte: w3schools