What is the difference between supervised and unsupervised learning algorithms? For an ML course (using R or Python) is it better to first learn unsupervised learning and then go in for supervised learning or vice versa and why?