Gern. Der Browser arbeitet die Datei von oben nach unten ab. Das Javascript greift hier:
auf das Input mit der ID "val"
und hier:
auf das Canvas mit der ID "display" zu. Steht das Javascript im Head, hat der Browser die Zeilen wo diese Elemente definiert werden, noch nicht abgearbeitet und sie sind deshalb undefiniert.
Es kommt zu keiner Fehlermeldung, weil z. B. $("#val") dann ein leeres Array liefert.