grep の戻り値で疑問なんすけど

grep -v でも引数の文字列が存在すれば0、存在しなければ1に見えます。

でも
ps -ef | grep hoge | grep -v grep

のときプロセスhogeが存在すれば、0存在しなければ1を返すのはなぜでしょう?

そのリターンを返してるはずの最後の grep -v grep ではは毎回
文字列"grep"がひっかかってると思うんですけど・・・