Prioritet operatora
Kada se u jednom izrazu nadju više operatora onda redosled po
kojima će se izvršavati operatori zavisi od njihovog prioriteta. Ukoliko dva i
više operatora imaju isti prioritet onda se oni izvršavaju sa leva na desno ili
obrnuto u zavisnosti od toga koji su operatori u pitanju – što se naziva
asocijativnost. Sada će mo dati tabelu prioriteta operatora i to tako da
najmanji prioritet imaju operatori pri vrhu a najveći pri dnu tabele. Napomena
da smo sa "n/b" u tabeli označili ukoliko je asocijativnost takva da je sve
jedno da li se izvršava sa leva na desno ili sa desna na levo.
Asocijativnost |
Operatori |
Levo |
, |
Levo |
or |
Levo |
xor |
Levo |
and |
Desno |
echo (ili print) |
Levo |
= += -= *= /= .=
%= &= |= ^= ~= <<= >>= |
Levo |
?: |
Levo |
|| |
Levo |
&& |
Levo |
| |
Levo |
^ |
Levo |
& |
n/b |
= = != === |
n/b |
< <= > >= |
Levo |
<< >> |
Levo |
+ - . |
Levo |
* / % |
Desno |
! ~ ++ -- (int) (double)
(string) (array) (object) @ |
Desno |
[] |
n/b |
new |
n/b |
( ) |
Najveći prioritet ima mala zagrada, zato uz pomoć malih zagrada možemo
zaobići prioritete tako što ako želimo da se prvo izvrši nešto manjeg
prioriteta stavimo to u malim zagradama. Na primer:
$a = (5 + 2) * 7;
Vrednost promenjljive biće 49 a da smo napisali:
$a = 5 + 2 * 7;
Bio bi 19 jer množenje ima veći prioritet tako da će se prvo pomnožiti 7
* 2 pa nakon toga rezultat toga će se sabrati sa 5. U prvom slučaju zbog
zagrada će se prvo izvršiti sabiranje pa nakon toga rezultat sabiranja će se
pomnožiti sa 7. Možemo koristiti neograničen broj malih zagrada i uvek će se
prvo izvršavati onaj izraz koji se nalazi u zagradi koja je najviše
ugnježdena.