calculate(subtract, a, b); получится, что внутри функции calculate cb = subtract, a = a и b = b. Тут путаница из-за названия переменных. a и b есть у вас и снаружи, и внутри функции calculate(). Для понятности можно их переименовать, будет работать точно так же:function calculate(cb, X, Y) {
var result = cb(X, Y);
document.write("Результат: " + result);
}