Mostrando postagens com marcador Precedência de Operadores. Mostrar todas as postagens
Mostrando postagens com marcador Precedência de Operadores. Mostrar todas as postagens

Precedência de Operadores em PHP

Neste tutorial de nosso curso PHP Progressivo, vamos aprender o que é a precedência de operadores matemáticos e como ela funciona no desenvolvimento de aplicações web modernas.

🇺🇸 Looking for the English version? Read this article in English.

📚 Domine o PHP Offline!

Gostou da nossa didática? Você pode ter todo esse conteúdo organizado e pronto para consulta rápida na Apostila PHP Progressivo. Ideal para quem quer estudar sem interrupções e com exercícios exclusivos.

QUERO A APOSTILA COMPLETA →

Precedência: O que é?

Quanto é: 1 + 2 * 3?

Se você fizer a soma primeiro, terá 9. Se fizer a multiplicação primeiro, terá 7. Na matemática escolar, aprendemos que a multiplicação tem prioridade. No PHP, a lógica é idêntica, mas com muito mais operadores envolvidos.

O computador é uma máquina de precisão. Ele não pode ter dúvidas; toda expressão deve resultar no mesmo valor, independentemente de onde o código for executado. Para garantir essa consistência, existe a Precedência de Operadores.

Tabela de Precedência no PHP

Abaixo, listamos os principais operadores em ordem de importância (da maior prioridade para a menor). O PHP sempre resolverá o que está no topo primeiro:

Operador Descrição
( ) Parênteses (Máxima Prioridade)
++ -- Incremento e Decremento
! Negação Lógica
* / % Multiplicação, Divisão e Resto
+ - . Soma, Subtração e Concatenação de Strings
< <= > >= Comparação (Menor, Maior, etc)
== != === !== Igualdade e Identidade
&& || Operadores Lógicos "E" e "OU"

Não se preocupe se você ainda não conhece alguns desses símbolos. No decorrer do nosso Curso de PHP, estudaremos cada um deles detalhadamente.

Associatividade: O que acontece se houver empate?

Quando dois operadores têm a mesma prioridade (como a soma e a subtração), o PHP geralmente os resolve da esquerda para a direita. Isso é chamado de associatividade à esquerda.

<?php
    // Soma e Subtração empatam. PHP faz: (10 - 5) + 2 = 7
    echo 10 - 5 + 2; 
?>

O Poder dos Parênteses

Como vimos na tabela, o parênteses é o operador "mais forte". Ele é usado para forçar o PHP a calcular algo fora da ordem padrão. Além disso, ele é uma ferramenta de clareza.

  • 1 + 2 * 3 resulta em 7 (Multiplicação primeiro).
  • (1 + 2) * 3 resulta em 9 (Soma primeiro, devido aos parênteses).

💡 Dica de Programador Sênior:

Mesmo quando a precedência matemática for óbvia, use parênteses em expressões complexas. Isso ajuda outros programadores (ou você mesmo no futuro) a ler o código rapidamente sem precisar "mentalizar" a tabela de precedência.

Exemplo Prático: Calculando Média

Se você quer calcular a média de duas notas, os parênteses são obrigatórios:

<?php
    $nota1 = 7;
    $nota2 = 9;

    // Errado: o PHP dividiria apenas a nota2 por 2 primeiro.
    // $media = $nota1 + $nota2 / 2; 

    // Correto:
    $media = ($nota1 + $nota2) / 2;
    echo "A média é: $media";
?>

Desafio: Exercícios de Precedência

Resolva as expressões abaixo mentalmente (ou criando um script PHP) e digite nos comentários quais resultados você obteve:

  1. ((1 + 2) * 3 - 4) * 5
  2. (6 - 7) * 8 * 9 + 10
  3. (10 + 9 - 8 + 7) * 6

Dúvidas? Deixe seu comentário e vamos aprender juntos!

Números e Operações Matemáticas em Perl

Neste tutorial de nossa apostila Perl Progressivo, vamos aprender como lidar com números e as operações matemáticas.

Baixar apostila de Perl em PDF
Baixar e estudar pela apostila em PDF

Tipos de dados numéricos em Perl

O Perl suporta os mais variados tipos de valores numéricos, como por exemplo:
2112                     # inteiro
-2112                    # inteiro negativo
12345.67              # float, fluatuante ou decimal
6.02E23               # em notação científica
0xffff                   # hexadecimal, começa sempre com 0x
0377                    # octal , começa sempre com 0
0b10011101        # binário, começa com 0b
4_294_967_296  # números grandes organizados por underline

Internamente, porém, o Perl trabalha como se todos fossem do tipo float, com precisão dupla.
Ou seja, não tem um valor 7 e sim um 7.0, por exemplo.
Se você já estudou linguagens como C, C++ ou Java, por exemplo, é como se o Perl tratasse todos os números como sendo do tipo double.

E note bem isso: em valores float (decimais), usamos o ponto e não a vírgula para separar a unidade da parte decimal.

Operações Matemáticas em Perl

O computador nada mais é que uma calculadora, bem rápida e que faz vários cálculos ao mesmo tempo. Então, vamos usar um pouco o Perl pra fazer nossa máquina calcular ?

As principais operações matemáticas são:
  • adição: usando o operador +
  • subtração: usando o operador -
  • multiplicação: usando o operador * (asterisco e não o x)
  • divisão: usando o operador /
  • exponenciação: usando o operador **
  • resto da divisão ou módulo: usando o operador %

Vamos fazer um script simples que pega dois números, 21 e 12, e faz todas essas operações:
#!/usr/bin/perl
print 21 + 12, "\n"; # Adição
print 21 - 12, "\n"; # Subtração
print 21 * 12, "\n"; # Multiplicação
print 21 / 12, "\n"; # Divisão
print 21 **12, "\n"; # Exponenciação
print 21 % 12, "\n"; # Resto da divisão
O resultado vai ser:
Operações matemáticas no Perl

Veja que o Perl imprimiu diretamente o resultado das operações, ele leu e interpretou que aquilo eram operações e resolveu elas, mostrando o valor resultante.

Lembrando que resto da divisão é aquele 'resto' que sobrava, quando você fazia continhas de divisão na escola:

Curso de Perl online grátis


Note que ao final de cada linha tem um símbolo de jogo da velha # e algo escrito.
O nome disso é comentário, serve única e exclusivamente para programadores lerem, o Perl ignora totalmente isso, ok? É apenas para explicar e organizar melhor os scripts em Perl.

Precedência de Operadores

Calcule, de cabeça, a seguinte operação:

  • 1 + 2 * 3


Para alguns o resultado pode ser 9: 1+2=3, 3*3=9
Para outros, pode ser 7: 2*3 = 6, 1+6=7

E aí, qual o certo?
Vamos deixar o Perl resolver:
#!/usr/bin/perl
print (1 + 2 * 3);
E o resultado que ele mostra é 7. E o motivo é a precedência de operadores.

O operador de multiplicação tem precedência maior na operação.
Agora crie um script para calcular:

  • (1+2)*3

#!/usr/bin/perl
print ( (1 + 2)*3 );
Veja que o resultado foi 9. Mudou só por conta de um par de parêntesis, confere?
Isso porque os parêntesis tem uma precedência maior que o operador de multiplicação.

Existe uma tabela de importância de precedência de operadores.
Ela é (de cima pra baixo, e na mesma linha da esquerda pra direita):
( )
++ --
**
*   /   %
+   -
<   <=   >   >=
==   !=
=   +=   -=   *=   /=   %=   **=

Os operadores que você não conhece, não se preocupe, vamos estudar com calma ao longo de nossa apostila de Perl.