Is the left part of the `&&` always evaluated before the right part?

I want to know because I'm wondering if I can change 

```
if(i > 0)
    if(someFunc(arr[i-1], arr[i]))
        //do work

```

to

`if(i > 0 && someFunc(arr[i-1], arr[i]))`

or would this cause undefined behaviour if the right side gets evaluated first and `arr[0-1]`is referenced?