SMOKE Testing- When testing team receives the build from the Development team first time, testing team executes the selected test cases which covers the major functionality of the application. if all the major functionality is working fine than testing team accept the builds for further testing.
Smoke testing is scripted.
Sanity Testing- When testing receives the build with minor changes, testing team checks the particular functionality. its working or not. it has not the selected test cases.
Sanity testing is unscripted.