Phase 00 - Lesson 13

As Quatro Operacoes e a Ordem

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Quando uma linha de matematica mistura mais e vezes, a resposta depende do que voce faz primeiro. Existe uma ordem combinada.

Tipo: Aprender Linguagens: Python Pre-requisitos: Nada alem das quatro operacoes: adicao, subtracao, multiplicacao, divisao Tempo: ~30 minutos

Objetivos de Aprendizagem

  • Ler uma expressao matematica que mistura as quatro operacoes e avalia-la na ordem correta
  • Enunciar a ordem das operacoes (parenteses, depois multiplicar/dividir, depois somar/subtrair)
  • Explicar por que agrupar com parenteses muda a resposta
  • Acompanhar a ordem de avaliacao dentro da expressao 34 / 128

O Conceito

Voce ja conhece as quatro operacoes: adicao (+), subtracao (-), multiplicacao (x) e divisao (/). Esse e todo o piso sobre o qual construimos. Tudo nesta fase e uma pequena variacao dessas quatro.

A primeira variacao e minima, mas derruba quase todo mundo. Quando uma unica linha mistura operacoes, a resposta nao e "da esquerda para a direita". Veja:

2 + 3 x 4

Se voce for da esquerda para a direita, obtem 2 + 3 = 5, depois 5 x 4 = 20. Errado. A resposta combinada e 14. Por que? Porque a multiplicacao e feita antes da adicao. Voce calcula 3 x 4 = 12 primeiro, depois 2 + 12 = 14.

Isso nao e uma regra inventada para irritar. Multiplicacao e adicao repetida (a proxima licao constroi isso), entao 3 x 4 e uma quantidade unica empacotada, 12, ja "fechada" antes de o + rodar.

A ordem

Faca as operacoes nesta ordem, de cima para baixo:

  1. Parenteses primeiro. O que esta dentro de ( ) e calculado antes de tocar o lado de fora.
  2. Multiplicar e dividir em seguida, da esquerda para a direita entre si.
  3. Somar e subtrair por ultimo, da esquerda para a direita entre si.

Um nome comum para isso e PEMDAS (Parenteses, Expoentes, Multiplicar, Dividir, Adicionar, Subtrair). Expoentes aparecem na licao 00-17; ignore o E por enquanto.

Parenteses sobrepoem a ordem

Parenteses sao uma sobreposicao manual. Eles dizem "faca esta parte primeiro, nao importa o que".

2 + 3 x 4   = 2 + 12 = 14
(2 + 3) x 4 = 5 x 4   = 20

Mesmos numeros, mesmas operacoes, agrupamento diferente, resposta diferente. Os parenteses forcam a adicao a acontecer antes da multiplicacao.

Exemplo resolvido: a ordem dentro de 34 / 128

No NeuroGrid, um bloco de 128 pesos ternarios e armazenado usando 34 bytes (voce vera de onde vem esses numeros mais adiante). Os "bytes por peso" sao:

34 / 128

Isso e uma unica divisao, entao ainda nao ha enigma de ordem. Mas suponha que voce queira "bytes por peso, depois dobrado para uma copia de seguranca":

34 / 128 x 2

Divisao e multiplicacao compartilham o mesmo nivel, entao va da esquerda para a direita: 34 / 128 = 0.265625 primeiro, depois x 2 = 0.53125. Se em vez disso voce quisesse "34 dividido pela quantidade 128 vezes 2", precisa escrever os parenteses:

34 / (128 x 2) = 34 / 256 = 0.1328125

Os parenteses sao a diferenca entre uma resposta certa e uma errada. Engenheiros os escrevem com generosidade.

Pratica de memoria

Produza a resposta antes de ler. Mais facil primeiro.

  1. 10 - 2 x 3 = ?
  2. (10 - 2) x 3 = ?
  3. 20 / 4 / 5 = ? (lembre: da esquerda para a direita entre as divisoes)

Respostas: 4; 24; 1 (20/4 = 5, depois 5/5 = 1).

Alerta de equivoco

A armadilha e "sempre da esquerda para a direita". Voce vai da esquerda para a direita apenas dentro do mesmo nivel. Multiplicar/dividir como grupo vence somar/subtrair como grupo. Na duvida, adicione parenteses para deixar a intencao explicita. O computador nunca vai adivinhar o que voce quis dizer.

Construa

python phases/00-setup-and-tooling/13-the-four-operations-and-order/code/order.py

Por que isso importa para IA

Toda formula adiante nesta fase e na seguinte e uma linha que mistura operacoes. A vazao do roofline, os bytes por peso, o cronograma da taxa de aprendizado, o produto escalar: cada um e uma expressao onde um agrupamento errado da um numero centenas de vezes maior ou menor. Acertar a ordem e a diferenca entre um modelo que roda e um numero em que voce nao pode confiar.

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).