I have this query:
SELECT * FROM (`users`) WHERE `date_next_payment` <= \'2011-02-02\' AND `status` = \'active\' OR `status` = \'past due\' >
SELECT * FROM (`users`) WHERE `date_next_payment` <= \'2011-02-02\' AND `status` = \'active\' OR `status` = \'past due\'
The MySQL manual has a page on operator precedence. It shows that AND has a higher precedence. So p1 AND p2 OR p3 is interpreted as (p1 AND p2) OR p3. A truth table will easily convince you that this is different from p1 AND (p2 OR p3).
p1 AND p2 OR p3
(p1 AND p2) OR p3
p1 AND (p2 OR p3)