There's a neat module called B:
eparse, that can show you how exactly the perl interpreter understands your code. I saved the code in a file called precedence.pl and called the following line and getting the following output:
perl -MO=Deparse,-p precedence.pl
($value1 = 8);
($value2 = 2);
($value3 = ((($value1--) % $value2) * (++$value2)));
print($value3);
This means you get 8%2, which is 0 times whatever, so obviously 0; Only after the multiplication is carried out, the increment takes place, though the incremented value is used. So you have ((8%2)*3)
The quote approach can of course not work, because you only get the variables interpolated and not the operators.