if( a == 0 ){}
と
if( 0 == a ){}
では、同じコードになる保証は何処にもない

判りやすく、C++で解説するならば
前者は
if ( a.operator==( 0 ) ){} // オブジェクトaの==メソッドの呼び出し
であり
後者は、
if ( operator==( 0, a ) ){} // グローバルな==関数の呼び出し
となるからである