比較関数の意味がわからん。

ちまちまとjavascriptを勉強中。テキストはこちら。
JavaScriptプログラミング入門 第2版
配列の並び替えの所で出てきた比較関数の意味がよくわからん。
昇順で並び替えるスクリプト

// 比較関数compareの定義(昇順)
function compare(a,b){
  return a - b;
}

var numArray = new Array(5,50,9,10,5);
numArray.sort(compare);
for (var i = 0; i < numArray.length; i++){
  document.write(numArray[i],"<br>");
}

この結果がこれ。

5
5
9
10
50

で、sort(compare)で昇順で並べ替えてるのはわかるんだけど、そこで使う比較関数の説明の部分で、
「aの方が大きい→正の値, aとbは等しい→0, bの方が大きい→負の値 を返す」
って書いてあるんだけど、なぜ比較関数を「return a-b」とすると昇順になるのかがさっぱりわからん。
正の値を返すとどうなって、負の値を返すとどうなるのかがわからん。
どうやら「return a - b;」だと昇順で、「return b - a;」だと降順になるらしいから、とりあえずは仕組みは置いといて形だけ覚えておくことにする。