Describe the operator precedence and use of parenthesis

Em Java, a precedência dos operadores determina a ordem em que as operações são avaliadas em uma expressão. Quando uma expressão contém vários operadores, a precedência dos operadores controla a ordem de avaliação. Além disso, os parênteses podem ser usados para alterar a ordem padrão de avaliação, definindo a precedência manualmente.

Aqui está uma breve descrição da precedência dos operadores em Java, da mais alta para a mais baixa:

  1. Operadores unários: - (negativo), + (positivo), ++ (pré-incremento), -- (pré-decremento), ! (negação lógica), ~ (complemento bit a bit).
  2. Operadores de multiplicação, divisão e módulo: *, /, %.
  3. Operadores de adição e subtração: +, -.
  4. Operadores shift: << (shift à esquerda), >> (shift à direita), >>> (shift à direita sem sinal).
  5. Operadores relacionais: <, >, <=, >=, instanceof.
  6. Operadores de igualdade: ==, !=.
  7. Operadores bit a bit AND: &.
  8. Operadores bit a bit XOR: ^.
  9. Operadores bit a bit OR: |.
  10. Operadores lógicos AND: &&.
  11. Operadores lógicos OR: ||.
  12. Operador condicional ternário: ? :.
  13. Operador de atribuição e operadores de atribuição compostos: =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=.

Lembre-se de que, em uma expressão, os operadores com maior precedência são avaliados primeiro. Se houver operadores com a mesma precedência, a associação (da esquerda para a direita ou da direita para a esquerda) determinará a ordem de avaliação.

Exemplo de uso de parênteses para alterar a precedência:

public class ExemploPrecedenciaParênteses {
    public static void main(String[] args) {
        int resultado = 5 * (2 + 3);  // Os parênteses alteram a precedência
        System.out.println("Resultado: " + resultado);
    }
}

Neste exemplo, os parênteses alteram a precedência, fazendo a soma dentro dos parênteses antes da multiplicação. O resultado será 25. O uso de parênteses é uma prática recomendada para tornar o código mais legível e evitar ambiguidades na ordem de avaliação.