I always enclose all expressions:
if ( (data[2] > 0) || ((data[0] > 0) && (data[1] == 0)))
There is no such thing as too many parentheses.
It's better to add extra parentheses than to spend hours or days trying to figure out why the code doesn't work.
Writing that:
are you sure that in a year you will remember that the operator "OR" here refers to the two conditions on the right, and not just the middle one?