Grantas gimė Nairne Škotijos aukštumose, kur jo tėvas buvo parapijos ministras, ir mokėsi Nairno akademijoje, Aberdeeno gimnazijoje ir Marischal koledže, Aberdeene. 1846 m. jis įstojo į Indijos armiją. Jis dalyvavo Sikhų kare.
(1848-49), tarnavo per Indijos maištą 1857 m. ir buvo sužeistas operacijose, skirtose palengvinti Lucknow.