What Is Their Main Difference?
'Had better' is a phrase; however, some count it as 'semi-modal verb.'
'Had better' is used to say what is the best thing to do. It is mainly used in its contracted form. It is often used to give warnings.
Talking about Obligations
'Ought to' and 'had better' talk about obligations on different levels.
- 'Ought to' expresses absolute obligations. If such obligations are unfulfilled, they may lead to penalties or punishments. 'Ought to' is highly uncommon and is mainly replaced by 'must.'
- 'Had better' is used to express a lower level of obligations that may not have been set as a law in society but are mainly common sense.
Talking about The Best Things to Do
We mainly use 'had better' to talk about the best thing to do. This is primarily used to show warnings. For example:
We use 'ought to' to give advice. Advice is what we think is the right thing to do. Have a look: