Downcasting em Swift com as e as?

Qual é a diferença entre esses dois trechos de código:

let cell = tableView.dequeueReusableCellWithIdentifier("cellId") as UITableViewCell?
// vs
let cell = tableView.dequeueReusableCellWithIdentifier("cellId") as? UITableViewCell

O resultado não é exatamente o mesmo?