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.
Operator | Primer | Asocijativnost |
---|---|---|
Uvećanje | x++ | - |
Umanjenje | x-- | - |
Prefiksno uvećanje | ++x | ulevo |
Prefiksno umanjenje | --x | ulevo |
Unarni plus | +x | ulevo |
Unarni minus | -x | ulevo |
Množenje | x*y | udesno |
Deljenje | x/y | udesno |
Ostatak celobrojnog deljenja | x%y | udesno |
Sabiranje | x+y | udesno |
Oduzimanje | x-y | udesno |
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.
x | vrednost je x |
x+1 | vrednost je x uvećan za 1, sam x se ne menja |
x++ | vrednost je x, a x onda postaje uvećan za 1 |
++x | vrednost 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.
-x | menja se zank vrednosti x |
x * -3 | unarni 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 * 2 | množenje |
x / 2 | deljenje |
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 % 3 | rezultat 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 % 3 | rezultat 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.76 | rezultat 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 + y | sabiranje |
x - 5 | oduzimanje |
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.