Aritmetičke operacije u JavaScriptu

Aritmetičke operacije su nam svima dobro poznate. To su osnovne operacije, bez kojih se ni ne može. Ovde ćemo videti kako se koriste u JavaScriptu (a samim tim i u drugim programskim jezicima).

Operandi su brojevi, a u JavaScriptu se ne pravi zaista razlika između celih i racionalnih brojeva.

U tabeli možemo videti koje aritmetičke operacije možemo koristiti.

OperatorPrimerAsocijativnost
Uvećanjex++-
Umanjenjex---
Prefiksno uvećanje++xulevo
Prefiksno umanjenje--xulevo
Unarni plus+xulevo
Unarni minus-xulevo
Množenjex*yudesno
Deljenjex/yudesno
Ostatak celobrojnog deljenjax%yudesno
Sabiranjex+yudesno
Oduzimanjex-yudesno

Uvećanje i umanjenje

Uvećanje i umanjenje (ili stručno "inkrementacija" i "dekrementacija") u stvari predstavlja povećavanje, odnosno smanjivanje vrednosti promenljive za 1. U nekim programskim jezicima su ovi operatori isključivo celobrojni - u JavaScriptu se primenjuju na bilo kakve numeričke vrednosti.

Ove operacije su jedine koje se moraju izvršavati nad numeričkim promenljivama (a nikako nad konstantama). Postoje u dve varijante - postfiksnoj i prefiksnoj.

Ako operator uvećanja/umanjenja učestvuje u izrazu kao postfiks (zadat iza promenljive), na tom mestu se uzima originalna vrednost promenljive, a tek onda se promenljiva poveća (ili smanji) za jedan. Sa druge strane, ako je operator zadat kao prefiks, pre "uračunavanja" se poveća/smanji vrednost promenljive. Pogledajte tablicu.

xvrednost je x
x+1vrednost je x uvećan za 1, sam x se ne menja
x++vrednost je x, a x onda postaje uvećan za 1
++xvrednost je x uvećan za 1, i x se uvećava za 1

Isto važi i za operator umanjenja (--). Pogledajmo primere kako bismo bolje razjasnili kako ovi operatori utiču na vrednost izraza.

Uvećanje i umanjenje

Pogledajte kako se vrednost y menja zavisno od toga da li je operator prefiksni ili postfiksni.


  x = 10;
  y = 5 + x++;  // y = 15, x = 11

  x = 10;
  y = 5 + ++x;  // y = 16, x = 11
		

Na kraju svakog od ovih sabiranja, x ima vrednost 10. Međutim, y uvek sadrži različit rezultat.


  x = 10;
  y = x++ + --x;  // y = 20
  // uzima se vrednost X (10) kao prvi sabirak, a onda se X uveća (11)
  // pre dodavanja drugog sabirka se umanji X (10), pa se onda sabere

  x = 10;
  y = --x + x++;  // y = 18
  // X se prvo umanji (9), a onda se sabere prvi sabirak
  // onda se sabere i drugi sabirak (9), pa se onda X uveća (10)

  x = 10;
  y = --x + ++x;  // y = 19
  // X se prvo umanji (9), a onda se sabere prvi sabirak
  // pre dodavanja drugog sabirka se X uveća (10), pa se onda sabere
		

Zbog toga što se menja vrednost operanda, zabranjeno je zadati ovaj operator nad konstantom, odnosno nad bilo čime što nije "gola promenljiva".

5 + 1 // dozvoljeno 5++ // zabranjeno (5-x)++ // zabranjeno

Isto tako, zabranjeno je (a takođe i besmisleno) upotrebiti ove operatore istovremeno na istoj promenljivoj.

++x++ // zabranjeno

Znak broja (unarni minus)

Operatori + (plus) i - (minus) se mogu koristiti i kao znak broja. Ne postoji neki matematički smisao za unarni plus, ali minus je sasvim opravdano koristiti.

-xmenja se zank vrednosti x
x * -3unarni minus ne zahteva zagradu - ima prioritet nad "običnim" operacijama

Množenje i deljenje

Operaciju množenja predstavljamo znakom "zvezdica" (*) dok se deljenje predstavlja kosom crtom (/). U nekim programskim jezicima postoji zaseba operacija celobrojnog deljenja, koja se primenjuje nad celim brojevima. Međutim, u JavaScriptu ne postoji zaista celobrojni tip (bar ne sa običnim numeričkim izrazima i promenljivama), tako da ne postoji ni potreba za ovom operacijom.

x * 2množenje
x / 2deljenje

Ostatak celobrojnog deljenja

U nekim slučajevima će nam biti potrebno da izračunamo ostatak celobrojnog deljenja. Ova operacija se označava znakom za procenat (%). Ovu operaciju je jednostavno opisati kada se radi sa celim brojevima:

14 % 3rezultat je 2
(kada podelimo 14 sa 3, dobijamo vrednost 4 i neki decimalni deo
4*3 je 12, što kada oduzmemo od 14 daje ostatak 2)
-14 % 3rezultat je -2
(rezultat uvek ima znak deljenika)

Iako je malo nelogično, ova operacije je u stvari definisana i za racionalne brojeve. To u drugim programskim jezicima, kao što je Pascal nije slučaj.

8 % 2.76rezultat je 2.48
(kada podelimo 8 sa 2.76, dobijamo vrednost 2.90
otkidamo decimalni deo rezultata i množimo ga sa deliocem: 2*2.76 je 5.52,
što kada oduzmemo od 8 daje ostatak 2.48)

Sabiranje i oduzimanje

Konačno dolazimo do svima poznatih operacija sabiranja (+) i oduzimanja (-). Ove operacije se ponašaju sasvim očekivano, kako smo i navikli. Čak se i obeležavaju znakovima koji su uobičajeni.

x + ysabiranje
x - 5oduzimanje

Ne zaboravite da za sve operacije postoji i prioritet izvršavanja. Ako ne navedemo zagrade, množenje i deljenje se uvek izvršavaju pre sabiranja i oduzimanja. Znak broja je "jači" i od množenja i deljenja, a uvećanje i umanjenje (bilo u prefiksu, bilo u postfiksu) se uvek obavlja pre ostalih operacija. Više o tome pročitajte u tekstu Redosled operacija.

Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.